import Components from "unplugin-vue-components/webpack";
import NutUIResolver from "@nutui/nutui-taro/dist/resolver";
import { resolve } from "path";
// const { h5Router } = require("../src/router/config");

const TARO_ENV = process.env.TARO_ENV;
const NODE_ENV = process.env.NODE_ENV;
const API_ENV = process.env.API_ENV;

const config = {
  projectName: "taro-test4",
  date: "2023-7-26",
  designWidth(input) {
    if (input?.file?.replace(/\\+/g, "/").indexOf("@nutui") > -1) {
      return 375;
    }
    return 750;
  },
  deviceRatio: {
    640: 2.34 / 2,
    750: 1,
    828: 1.81 / 2,
    375: 2 / 1,
  },
  sourceRoot: "src",
  outputRoot: "dist",
  plugins: [
    "@tarojs/plugin-html",
    "taro-plugin-pinia",
    "@dcasia/mini-program-tailwind-webpack-plugin/dist/taro",
  ],
  defineConstants: {
    TARO_ENV: `"${TARO_ENV}"`,
    NODE_ENV: `"${NODE_ENV}"`,
    API_ENV: `"${API_ENV}"`,
  },
  copy: {
    patterns: [],
    options: {},
  },
  framework: "vue3",
  compiler: {
    type: "webpack5",
    prebundle: { enable: false },
  },
  cache: {
    enable: false, // Webpack 持久化缓存配置，建议开启。默认配置请参考：https://docs.taro.zone/docs/config-detail#cache
  },
  sass: {
    data: `@import "@nutui/nutui-taro/dist/styles/variables.scss";`,
  },
  alias: {
    "@": resolve(__dirname, "../src"),
  },
  mini: {
    webpackChain(chain) {
      chain
        .plugin("unplugin-vue-components")
        .use(Components({ resolvers: [NutUIResolver({ taro: true })] }));
    },
    postcss: {
      pxtransform: {
        enable: true,
        config: {
          // selectorBlackList: ['nut-']
        },
      },
      url: {
        enable: true,
        config: { limit: 1024 },
      },
      cssModules: {
        enable: true, // 默认为 false，如需使用 css modules 功能，则设为 true
        config: {
          namingPattern: "module", // 转换模式，取值为 global/module
          generateScopedName: "[name]__[local]___[hash:base64:5]",
        },
      },
    },
  },
  h5: {
    webpackChain(chain) {
      chain.plugin("unplugin-vue-components").use(
        Components({
          resolvers: [NutUIResolver({ taro: true })],
        })
      );
    },
    // router: h5Router,
    publicPath: "/",
    staticDirectory: "static",
    esnextModules: ["nutui-taro", "icons-vue-taro"],
    postcss: {
      autoprefixer: {
        enable: true,
        config: {},
      },
      cssModules: {
        enable: true, // 默认为 false，如需使用 css modules 功能，则设为 true
        config: {
          namingPattern: "module", // 转换模式，取值为 global/module
          generateScopedName: "[name]__[local]___[hash:base64:5]",
        },
      },
    },
    devServer: {
      https: false,
      open: false,
      proxy: {
        "/api": {
          target: "https://md.nowcoder.com",
          changeOrigin: true,
          pathRewrite: { "/api": "" },
          headers: { Referer: "https://md.nowcoder.com" },
          onProxyReq(_proxyReq) {},
        },
      },
    },
  },
};

module.exports = function (merge) {
  if (process.env.NODE_ENV === "development") {
    return merge({}, config, require("./dev"));
  }
  return merge({}, config, require("./prod"));
};
